package override;
/*
    为什么有方法的重写:
        当父类行为的方法体不能满足子类的使用,可以在子类中重写父类的方法,覆盖父类方法的方法体;

    方法重写的特点:
        1. 必须有继承/实现关系
        2. 子类方法和父类方法的声明完全一致(99.99%)
            方法名必须一致
            形参列表必须一致
        3. 方法体可以不一样
        ------------
        重写中子类方法可以不一样的东西:
        1. 权限修饰符 :  子类的重写方法权限修饰符必须大于等于父类的方法
                public > protected > 不写 > private
        2. 返回值类型
            void : 必须一样
            基本数据类型 : 必须一样
            引用数据类型 : 子类重写方法的返回值类型必须是父类方法的子类或者同类
                Integer < Number < Object

       注解: @Override 可以用来约束重写方法的格式
            加在子类重写方法声明上

       static 修饰的方法没有重写的概念!
 */

public class Demo {
    public static void main(String[] args) {
        //创建子类对象
        Zi zi = new Zi();
        zi.eat();
    }
}

class Fu{
    public Object eat(){
        System.out.println("喝口小酒 吃口牛肉~");
        return 10;
    }
}

class Zi extends Fu{
    //重写父类的方法 把父类的方法的方法体给覆盖

    @Override
    public Object eat() {
        System.out.println("吃口面包 喝口牛奶~");
        return 10;
    }
}

